package carmensd.vista

import org.uqbar.arena.aop.windows.TransactionalDialog
import org.uqbar.arena.layout.ColumnLayout
import org.uqbar.arena.widgets.Button
import org.uqbar.arena.widgets.Label
import org.uqbar.arena.widgets.List
import org.uqbar.arena.widgets.Panel
import org.uqbar.arena.widgets.TextBox
import org.uqbar.arena.windows.Dialog
import org.uqbar.arena.windows.WindowOwner
import applicationModel.PaisAppModel
import applicationModel.EditarConexionesAppModel
import applicationModel.EditarLugaresAppModel
import applicationModel.EditarCaracteristicasAppModel
import org.uqbar.arena.bindings.PropertyAdapter
import modelo.Pais
import modelo.Lugar
import carmensd.vista.expedienteYvillanos.AsistenteDeContenidos

class MainPaisWindow extends TransactionalDialog<PaisAppModel>{
	
		
	new(WindowOwner owner, PaisAppModel model) {
		super(owner, model)
	}
	
	new(MapaMundiWindow window, PaisAppModel model, String string) {
		super(window, model)
		this.title = string
	}
	
	def cerrarVentana() {
		this.close()
	}
	
	def editarCaracteristicas() {
		this.openDialog(new EditarCaracteristicasWindow(this, new EditarCaracteristicasAppModel(this.modelObject.pais)))
	}
	
	def editarConexiones() {
		this.openDialog(new EditarConexionesWindow(this, new EditarConexionesAppModel(this.modelObject.pais, this.modelObject.mapamundi)))
	}
	
	def editarLugares() {
		this.openDialog(new EditarLugaresWindow(this, new EditarLugaresAppModel(this.modelObject.pais)))
	}

	def colocarListaPais(Panel nuevoVillanoPanel, String propiedadDelDominio) {
		AsistenteDeContenidos.crearLista(nuevoVillanoPanel, propiedadDelDominio, typeof(Pais), "nombre")
	}
	
	def colocarListaLugar(Panel nuevoVillanoPanel, String propiedadDelDominio) {
		AsistenteDeContenidos.crearLista(nuevoVillanoPanel, propiedadDelDominio, typeof(Lugar), "nombreLugar")
			
	}
	
	def colocarLista(Panel nuevoVillanoPanel, String propiedadDelDominio) {
			new List(nuevoVillanoPanel) => [
				allowNull(true)
				height = 90
				width = 150
				bindItemsToProperty(propiedadDelDominio)
				//bindValueToProperty(propiedadDelDominio)
			]
	}
	
	def openDialog(Dialog<?> dialog) {
		dialog.open
	}
	
	override protected createFormPanel(Panel panelNuevoPais) {
		panelNuevoPais.setLayout(new ColumnLayout(2));

		/* Nombre */
		new Label(panelNuevoPais).setText("Nombre:");
		new TextBox(panelNuevoPais).bindValueToProperty("pais.nombre");
		
		new Label(panelNuevoPais).setText("caracteristicas:");
		new Button(panelNuevoPais) => [
			caption = "Editar Caracteristicas";
			onClick [|this.editarCaracteristicas()];
		]

		this.colocarLista(panelNuevoPais, "pais.caracteristicas");
		new Label(panelNuevoPais).setText("");
		
		new Label(panelNuevoPais).setText("conexiones:");
		new Button(panelNuevoPais) => [
			caption = "Editar Conexiones";
			onClick [| this.editarConexiones()]
		]
		
		this.colocarListaPais(panelNuevoPais, "pais.paisesConConexionAerea")
		new Label(panelNuevoPais).setText("");
		
		new Label(panelNuevoPais).setText("Lugares de interes:");
		new Button(panelNuevoPais) => [
			caption = "Editar Lugares";
			onClick [| this.editarLugares()]
		]
		
		this.colocarListaLugar(panelNuevoPais, "pais.lugaresElegidos")
		new Label(panelNuevoPais).setText("");
		
		new Button(panelNuevoPais) => [
			caption = "Aceptar";
			onClick [| 
				this.modelObject.agregarPais()
				this.cerrarVentana()
			]
		]
	}
}